home *** CD-ROM | disk | FTP | other *** search
- *****************************************************************************
- * MINI 'NEW-GROUP' XENTRIX ARE LAUNCHED INTRO *
- * *
- * CODE: BY TANGO/XENTRIX *
- * STARTED: 9/2/91 *
- * FINISHED: 9/2/91 *
- * *
- *****************************************************************************
-
-
- section ste,code_c
- incdir df1:
- opt c-
- include gamemacros
-
-
- *****************************************************************************
- * KILL O/S AND SET UP COPPER ETC... *
- *****************************************************************************
-
- killsys
- move.l #$70000,a0
- move.l #10240,d2
- cloop:
- clr.l (a0)+
- dbf d2,cloop
-
- move.l #$60000,a0
- move.l #10240,d2
- dloop:
- clr.l (a0)+
- dbf d2,dloop
-
- lea custom,a5
- move.l #newcop,$dff080
- move.w #$8640,$dff096
- mouse:
- move.l vposr(a5),d0
- and.l #$1ff00,d0
- cmp.l #$00100,d0
- bne.s mouse
- ; move.w #$fff,$dff180
-
- bsr dbuff
- bsr clear_bobs
- bsr move_bobs
-
- move.w #$000,$dff180
- btst #6,$bfe001
- bne.s mouse
- ressys
- clr.l d0
- rts
-
-
- *****************************************************************************
- * BLIT BOB ON *
- *****************************************************************************
-
- blit_bob:
- lea bltapth(a5),a3 ; Faster addressing modes
- lea bltbpth(a5),a4
- lea bltdpth(a5),a6
- move.w #36,d7
- move.w #-2,d3
- move.w #48<<6!2,d4
- move.l bob_y(pc),d0 ; get ship y-pos in d0
- move.l bob_x(pc),d1 ; get ship x-pos in d1
- move.l screen_base(pc),a0 ; screen addr.
- lea bobs(pc),a1 ; bob gfx
- lea bobmask(pc),a2 ; bob mask gfx
- move.w #$0fca,d6 ; minterm for cookie cut
- ror.l #4,d1 ; divide x-pos by 16
- add.w d1,d1 ; times by 2 (keep in words!)
- add.w d1,d0 ; add x-pos to y-pos
- add.l d0,a0 ; add to screen addr.
- swap d1 ; swap hi and lo words
- or.w d1,d6 ; 'OR' with minterm (get shift value)
- blitwait
- move.w d3,bltamod(a5) ; modulo =-2 (using RAW BLIT)
- move.w d3,bltbmod(a5) ; modulo =-2 (using RAW BLIT)
- move.w d7,bltcmod(a5)
- move.w d7,bltdmod(a5)
- move.l a0,bltcpth(a5) ; screen addr. in Source C
- move.l a0,(a6) ; bltdpth Screen addr. in Dest D
- move.l a1,(a4) ; bltbpth Ship gfx addr. in Source B
- move.l a2,(a3) ; bltapth Ship mask gfx addr. in Source A
- move.w #$ffff,bltafwm(a5)
- move.w #$0000,bltalwm(a5)
- move.w d6,bltcon0(a5) ; Shift value
- move.w d1,bltcon1(a5) ; Shift value for mask
- move.w d4,bltsize(a5) ; Go to work !
- rts
-
-
- *****************************************************************************
- * MOVE THE BOBS *
- *****************************************************************************
-
- move_bobs:
- lea ysintab(pc),a1 ; point to y-sine table
- lea xsintab(pc),a2 ; point to x-sine table
- move.l frmptr(pc),a0 ; pointer to formation
- move.w (a0)+,d7 ; no. of bobs to plot
- bob_loop:
- move.w (a0)+,d1 ; x-pos
- move.w (a0)+,d0 ; y-pos
- move.w (a0)+,d5 ; x-increment
- move.w (a0)+,d6 ; y-increment
- add.w d0,d0 ; to even words
- add.w d1,d1 ; to even words
- and.w #$fe,d0
- and.w #$fe,d1
- move.w (a1,d0),bob_y+2 ; got y-pos relevant to sine table
- move.w (a2,d1),bob_x+2 ; got x-pos relevant to sine table
- save_all
- bsr blit_bob
- return_all
- add.w d5,-8(a0) ; add to x-pos
- add.w d6,-6(a0) ; add to y-pos
- dbf d7,bob_loop
- rts
-
-
- *****************************************************************************
- * DOUBLE BUFFER THE SCREEN *
- *****************************************************************************
-
- dbuff:
- not.b buffer ; logical not
- tst.b buffer ; test which screen
- bne.s other ; if not, then flip
- move.l #$60000,screen_base ; point screen to $60000
- move.w #$0006,a1h+2 ; set up bitmaps
- move.w #$0006,a2h+2
- move.w #$0006,a3h+2
- rts
- other:
- move.l #$70000,screen_base ; point screen to $70000
- move.w #$0007,a1h+2 ; set up bitmaps
- move.w #$0007,a2h+2
- move.w #$0007,a3h+2
- rts
-
-
- clear_bobs:
-
- move.l screen_base(pc),a0
- blitwait
- move.w #$0000,bltdmod(a5)
- move.l #-1,bltafwm(a5)
- move.l #$01000000,bltcon0(a5)
- move.l a0,bltdpth(a5)
- move.w #216*64+60,bltsize(a5)
- rts
-
-
- *****************************************************************************
- * INTRO COPPER LIST *
- *****************************************************************************
-
- newcop:
- cmove bpl1mod,80
- cmove bpl2mod,80
- cmove bplcon0,$3200
- cmove diwstrt,$2c81
- cmove diwstop,$2cc1
- cmove ddfstrt,$38
- cmove ddfstop,$d0
- a1h cmove bpl1pth,$0007
- cmove bpl1ptl,$0000
- a2h cmove bpl2pth,$0007
- cmove bpl2ptl,$0028
- a3h cmove bpl3pth,$0007
- cmove bpl3ptl,$0050
- dc.w $0180,$0000,$0182,$0eee,$0184,$0555,$0186,$0666
- dc.w $0188,$08aa,$018a,$0499,$018c,$03bb,$018e,$00dd
- end_copper
-
-
- *****************************************************************************
- * INTRO VARIABLES *
- *****************************************************************************
-
- screen_base:
- dc.l $70000
- bob_y:
- dc.l 20
- bob_x:
- dc.l 20
- frmptr:
- dc.l form1
- buffer:
- dc.b 0
- even
-
-
- *****************************************************************************
- * BOB FORMATION DATA *
- *****************************************************************************
-
- form1:
- dc.w 30-1
- x set 0
- y set 0
- rept 30
- dc.w x,y
- dc.w 1,1
- x set x+20
- y set y-40
- endr
- even
-
-
- *****************************************************************************
- * X,Y SINETABLES FOR BOBS *
- *****************************************************************************
-
- ysintab:
- rept 2
- dc.w 200*120,200*120,200*120,199*120,198*120,197*120,196*120,194*120
- dc.w 192*120,190*120,188*120,186*120,183*120,180*120,177*120,174*120
- dc.w 171*120,167*120,163*120,160*120,156*120,151*120,147*120,143*120
- dc.w 138*120,134*120,129*120,124*120,120*120,115*120,110*120,105*120
- dc.w 100*120,95*120,90*120,85*120,80*120,76*120,71*120,66*120
- dc.w 62*120,57*120,53*120,49*120,44*120,40*120,37*120,33*120
- dc.w 29*120,26*120,23*120,20*120,17*120,14*120,12*120,10*120
- dc.w 8*120,6*120,4*120,3*120,2*120,1*120,0*120,0*120
- dc.w 0*120,0*120,0*120,1*120,2*120,3*120,4*120,6*120
- dc.w 8*120,10*120,12*120,14*120,17*120,20*120,23*120,26*120
- dc.w 29*120,33*120,37*120,40*120,44*120,49*120,53*120,57*120
- dc.w 62*120,66*120,71*120,76*120,80*120,85*120,90*120,95*120
- dc.w 100*120,105*120,110*120,115*120,120*120,124*120,129*120,134*120
- dc.w 138*120,143*120,147*120,151*120,156*120,160*120,163*120,167*120
- dc.w 171*120,174*120,177*120,180*120,183*120,186*120,188*120,190*120
- dc.w 192*120,194*120,196*120,197*120,198*120,199*120,200*120,200*120
- endr
- even
- xsintab:
- rept 2
- dc.w 280,280,279,278,277,276,274,272
- dc.w 269,267,263,260,256,252,248,244
- dc.w 239,234,229,223,218,212,206,200
- dc.w 194,187,181,174,167,161,154,147
- dc.w 140,133,126,119,113,106,99,93
- dc.w 86,80,74,68,62,57,51,46
- dc.w 41,36,32,28,24,20,17,13
- dc.w 11,8,6,4,3,2,1,0
- dc.w 0,0,1,2,3,4,6,8
- dc.w 11,13,17,20,24,28,32,36
- dc.w 41,46,51,57,62,68,74,80
- dc.w 86,93,99,106,113,119,126,133
- dc.w 140,147,154,161,167,174,181,187
- dc.w 194,200,206,212,218,223,229,234
- dc.w 239,244,248,252,256,260,263,267
- dc.w 269,272,274,276,277,278,279,280
- endr
- even
-
-
- *****************************************************************************
- * BINARY FILES *
- *****************************************************************************
-
- bobs:
- incbin gfx/ball.bin
- bobmask:
- incbin gfx/ballmask
- even
-
-
-
-
-